<?php
/**
 * FeedController
 * каталог feed/
 * лента новостей 
 */
class FeedController extends AbstractModule {

    private $model;
    private $model_LR;
    public function __construct() {
        parent::__construct();
        //разрешёные пути
        $this->model = new FeedModel();
        $this->model_LR = new LRModel();
        $this->setAllowedPaths(array(
            'index',
        ));
    }
   /**
   * каталог feed/index
   * вывод всех новостей
   * @return boolean 
   */
    public function index() {
        //если не залогинен, 404
        if(!$this->user->isLogged) return false;
        
//        $this->load->model('Feed');

        //получаем все новости из БД
        $data = $this->model->getGroupNews();
        
        $news=array();
        foreach ($data as $value) {
            //парсим поле callback, достём класс и метод
            preg_match("/^(([^\s]+)Model)::([^\s]+)+$/ui", $value['callback'], $results);
            //грузим класс полученный из callback
//            $this->load->model($results[2]);
            //обекъект над которым совершается действие
            $what_obj = $this->{"model_" . $results[2]};
            var_dump($results);
            //у этого объекта есть метод getFeedInfo, т.к. он реализует IFeed. 
            //этот метод возращает шаблон новости
            $feed_info = $what_obj->getFeedInfo($results[3], $value['what'], $value['num']);
            //получаем данные о том кто совершил действие
            $who_data = $this->model_LR->getUserDataById($value['who']);
            $what_name= $what_obj->getNameById($value['what']);
            //формируем ссылки на страницу профайла того кто совершил действие и на страницу того над чем совершено действие
            $who_link = preg_replace('/%who/ui', $value['who'], '<a href="' . $feed_info['who_link'] . '">' . $who_data['realname'] . '</a>');
            $what_link = preg_replace('/%what/ui', $value['what'], '<a href="' . $feed_info['what_link'] . '">' . $what_name . '</a>');
            //добавляем новость в массив
            $news[] = array('subject' => preg_replace('/%what/ui', $what_link, preg_replace('/%who/ui', $who_link, $feed_info['text'])),
                            'date' => $value['n_date']);
        }
//        $this->load->view('Feed');
        
        
        
        $pagedata = array();     
        $pagedata[] = array('data'=> FeedView::getTableWithNews($news), 'region'=>'heap');
        $this->output($pagedata);
        
        return true;
    }

    public function delete() {
        
    }

    public function install() {
        
    }
}

?>